package com.estrelas.classes;

import weka.classifiers.lazy.IBk;
import weka.core.Instance;
import weka.core.Instances;

public class Estrela {

	// variveis de uso
	private String[] classes = { "M", "K", "G", "F", "A", "B", "O" };
	private double temperaturaKelvin;
	private double massaSolar;
	private double raioSolar;
	private double luminosidadeBolometrica;
	private String classeEstelar;
	private String classeSelecionada;

	// metodos de entrada e saida

	public double gettemperaturaKelvin() {
		return this.temperaturaKelvin;
	}

	public void settemperaturaKelvin(double temperaturaKelvin) {
		this.temperaturaKelvin = temperaturaKelvin;
	}

	public double getmassaSolar() {
		return this.massaSolar;
	}

	public void setmasssaSolar(double massaSolar) {
		this.massaSolar = massaSolar;
	}

	public double getraioSolar() {
		return this.raioSolar;
	}

	public void setraioSolar(double raioSolar) {
		this.raioSolar = raioSolar;
	}

	public double getluminosidadeBolometrica() {
		return this.luminosidadeBolometrica;
	}

	public void setluminosidadeBolometrica(double luminosidadeBolometrica) {
		this.luminosidadeBolometrica = luminosidadeBolometrica;
	}

	public String getclasseEstelar() {
		return this.classeEstelar;
	}

	public String getclasseSelecionada() {
		return this.classeSelecionada;
	}

	// metodo classificador knn
	public void Classificar(Instances dataset) throws Exception{
		
		
		Instance estrela = new Instance(5);
		estrela.setDataset(dataset);
		estrela.setValue(0, this.temperaturaKelvin);
		estrela.setValue(1, this.massaSolar);
		estrela.setValue(2, this.raioSolar);
		estrela.setValue(3, this.luminosidadeBolometrica);
		
		IBk knn = new IBk(3);
		knn.buildClassifier(dataset);
		
		int r = (int) knn.classifyInstance(estrela);
		
		this.classeEstelar = String.valueOf(r);
		
		this.classeSelecionada = classes[r];
	}
}
